#[钛妹]: 钛哥！我写代码像搬家一样乱！
#[钛妹]: 所有东西堆在一起，找都找不到...
#[钛妹]: 有没有像收纳箱一样的代码管理法？

#[钛哥]: 问得好！模块就是代码的收纳大师！
#[钛哥]: 就像把餐具放厨房，衣服放衣柜——
#[钛哥]: 现在带你玩转Python模块的乾坤大挪移！

#[钛妹]: 怎么把代码装进"收纳箱"？
# 文件保存为mymodule.py
def greeting(name):
    print(f"欢迎您，{name}！")

member = {
    "name": "钛合金小猫",
    "age": 2,
    "品种": "赛博猫"
}

#[钛哥]: 看！我们把函数和变量打包进文件
#[钛哥]: 这个.py文件就是专属模块啦
#[钛妹]: 原来模块就是代码文件，超简单！

#[钛妹]: 怎么使用其他模块里的工具？
import mymodule  # 导入整个模块

mymodule.greeting("新用户")  # 调用模块函数
print(mymodule.member["age"])  # 访问模块变量

#[钛哥]: 用import+模块名就能搬来整个工具箱
#[钛哥]: 模块名.功能名 的格式防止命名冲突
#[钛妹]: 就像搬家时用卡车运整个箱子！

#[钛妹]: 模块名太长怎么办？
import mymodule as mm  # 设置别名

mm.greeting("VIP用户")
print(mm.member["品种"])

#[钛哥]: as关键字就像给箱子贴便签
#[钛哥]: 简化调用还能避免重名
#[钛妹]: 原来模块也能有"小名"呀！

#[钛妹]: 只想用某个具体工具呢？
from mymodule import greeting  # 精准导入

greeting("钛哥")  # 直接调用无需模块名前缀

#[钛哥]: from...import 像从箱子拿指定工具
#[钛哥]: 注意！可能引发命名冲突哦
#[钛妹]: 这就是带特定工具出门的感觉！

#[钛妹]: Python自带哪些好模块？
import math  # 数学模块

print("圆周率:", math.pi)
print("平方根:", math.sqrt(9))

import random  # 随机模块

print("随机数:", random.randint(1,100))

#[钛哥]: Python自带200+标准库模块
#[钛哥]: 数学、时间、文件处理应有尽有
#[钛妹]: 这就是Python的百宝箱啊！

#[钛妹]: 怎么查看模块有哪些功能？
print(dir(math))  # 列出所有属性和方法

#[钛哥]: dir()像打开工具箱的抽屉列表
#[钛哥]: 看到双下划线开头的是内置方法
#[钛妹]: 原来能这样探索模块内容！

#[钛妹]: 听说还能装第三方模块？
# 示例需要安装requests库
import requests

response = requests.get("https://www.example.com")
print("状态码:", response.status_code)

#[钛哥]: pip install装第三方模块超方便
#[钛哥]: 比如requests处理HTTP请求超赞
#[钛妹]: Python生态果然强大！

#[钛妹]: 修改模块后要重启解释器吗？
import importlib

importlib.reload(mymodule)  # 重新加载模块

#[钛哥]: 开发时用reload避免反复重启
#[钛哥]: 但生产环境慎用可能引发状态问题
#[钛妹]: 程序员的时光机功能！

#[钛妹]: 大型项目怎么组织模块？
"""
myproject/
├── __init__.py
├── utils/
│   ├── __init__.py
│   ├── math_tools.py
│   └── string_tools.py
└── main.py
"""

#[钛哥]: 用目录+__init__.py创建包
#[钛哥]: 像这样from utils.math_tools import calc
#[钛妹]: 原来模块还能组成包大厦！

#[钛妹]: 今天学了三板斧：
#[钛妹]: 1. 模块是代码的收纳工具箱
#[钛妹]: 2. import各种姿势灵活调用
#[钛妹]: 3. 内置+第三方模块生态强大

#[钛哥]: 用好模块，代码整洁度提升200%！
#[钛妹]: 对了各位！持续学习才是硬道理！
#[钛妹]: 点赞关注不迷路！